草庐IT

c++ - c++14中std::string的运算符后缀

全部标签

c# - 我可以/应该使用隐式运算符而不是覆盖 ToString 吗?

我有一个类,我想轻松地写出字符串(例如,用于记录目的)。我可以使用隐式运算符将对象隐式转换为字符串而不是重写ToString方法吗?例如,我有一个包含姓名和年龄的Person类:publicclassPerson{publicstringName{get;set;}publicintAge{get;set;}}我可以覆盖ToString:publicoverridestringToString(){returnString.Format("Name:{0},Age:{1}",this.Name,this.Age);}或者我可以使用隐式运算符:publicstaticimplicitop

c# - 在 C# 中寻找后缀树实现?

我已经实现了对研究项目的基本搜索。我试图通过构建suffixtree来提高搜索效率.我对Ukkonen的C#实现很感兴趣算法。如果存在这样的实现,我不想浪费时间自己动手。 最佳答案 很难回答的问题。这是我能找到的最接近的匹配项:http://www.codeproject.com/KB/recipes/ahocorasick.aspx,这是Aho-Corasick字符串匹配算法的实现。现在,该算法使用类似后缀树的结构:http://en.wikipedia.org/wiki/Aho-Corasick_algorithm现在,如果您想

c# - 条件运算符不适用于继承相同基类型的两种类型

为什么条件运算符(?:)在与从单个基类型继承的两个类型一起使用时不起作用?我的例子是:ActionResultfoo=(someCondition)?RedirectToAction("Foo","Bar"):Redirect(someUrl);长格式工作正常的地方:ActionResultfoo;if(someCondition){foo=RedirectToAction("Foo","Bar");}else{foo=Redirect(someUrl);}RedirectToRouteResult和RedirectResult这两个返回类型都继承自ActionResult。

c# - "The binary operator Add is not defined for the types ' System.String ' and ' System.String '."-- 真的吗?

尝试运行以下代码时:Expression>stringExpression=Expression.Lambda>(Expression.Add(stringParam,Expression.Constant("A")),newList(){stringParam});stringAB=stringExpression.Compile()("B");我收到标题中提到的错误:“二元运算符Add没有为类型‘System.String’和‘System.String’定义。”真的是这样吗?显然在C#中它有效。在C#中执行strings="A"+"B"是表达式编译器无法访问的特殊语法糖吗?

c# - 如果没有可空 DateTime 的隐式运算符,为什么 C# 隐式转换为可空 DateTime?

这是一个关于C#语言或至少该语言在VisualStudio中是如何实现的问题。假设有一个Foo类,它为System.DateTime定义了一个隐式运算符publicstaticimplicitoperatorDateTime(Fooitem)考虑以下代码:Foofoo=SomeMethodWhichCanReturnNull();DateTime?dtFoo=foo;我的期望:编译失败提示没有从Foo到DateTime?的转换。我的发现:编译器实际上调用了从Foo到DateTime的已定义隐式运算符,并在传递null(它是转换器可以响应null的唯一方式)。当然,work-around

c# - "do"/Action LINQ 运算符有什么计划吗?

这是一个带有foreach循环的简单方法:IEnumerableFieldsToXElements(objectinstance){varfieldElements=newList();foreach(varfieldininstance.GetType().GetFields(instance)){fieldElements.Add(newXElement(field.Name,field.GetValue(instance)));}returnfieldElements;}有点丑。如果LINQ中有一些运算符表示“做某事”(例如,为LINQ语句中的每个选定项执行Action),它看起

c# - string.IsNullOrEmpty(myString) 或 string.IsNullOrWhiteSpace(myString) 是否违反 SRP 规则?

如问题所示,正如函数名称所示,我们正在使用像IsNullOrEmpty或IsNullOrWhiteSpace这样的字符串函数,它们做的不止一项工作,这是否违反了SRP?它不应该是string.isValid(EnumtypeofValidation)而不是使用策略模式来选择正确的策略来验证。或者在实用程序类或静态类中违反SRP是否完全可以。 最佳答案 SRP说一个函数或类应该只有一个改变的理由。改变的理由是什么?更改的原因是请求更改的用户。因此,一个类或函数应该只有一个请求更改的用户。现在,一个先进行一些计算然后进行一些格式化的函数

c# - 运算符 '?' 不能应用于类型 'T' 的操作数 (2)

我遇到了C#编译器(VS2015)的奇怪行为。在下面的代码中,编译器对Value2很满意,但提示Value1:Operator'?'不能应用于“T”类型的操作数为什么?publicinterfaceIValueProvider{TValue{get;}}classValidator{publicValidator(IValueProviderprovider){_valueProvider=provider;}publicTValue1=>_valueProvider?.Value??default(T);publicTValue2=>_valueProvider!=null?_val

c# - System.String 的内部结构

我用反射查看了System.String的内部字段,发现了三个字段:m_arrayLengthm_stringLengthm_firstChar我不明白这是怎么回事。m_arrayLength是一些数组的长度。这个数组在哪里?它显然不是字符串类的成员字段。m_stringLength是有道理的。它是字符串的长度。m_firstChar是字符串中的第一个字符。所以我的问题是字符串的其余字符在哪里?如果不在字符串类中,字符串的内容存储在哪里? 最佳答案 第一个字符提供对缓冲区中第一个字符的内存地址的访问(通过&m_firstChar)。

c# - C# 中的空合并运算符 (??) 是线程安全的吗?

以下代码中是否存在可能导致NullReferenceException的竞争条件?--或--Callback变量是否可以在null合并运算符检查null值之后但在调用函数之前设置为null?classMyClass{publicActionCallback{get;set;}publicvoidDoCallback(){(Callback??newAction(()=>{}))();}}编辑这是出于好奇而提出的问题。我通常不会这样编码。我不担心Callback变量变得陈旧。我担心DoCallback会抛出Exception。编辑#2这是我的类(class):classMyClass{A